home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2003 November A / PCWK1103A.iso / Adobe After Effects 6.0 tryout / MM5.Cab / F3697_render_and_email.jsx.304FA6F7_2783_11D4_8520_00C04F602FD3 < prev    next >
Text File  |  2003-07-18  |  4KB  |  130 lines

  1. // version history
  2. // 2 - 6/24/03 added support for authorization settings and better errors.
  3. //        also removed naked \n from body of email and replaced with \r\n.
  4.  
  5. {
  6.     var safeToRunScript = true;
  7.     
  8.     safeToRunScript = app.project != null;
  9.     if (! app.project) {
  10.         alert ("A project must be open to run this script.");
  11.     }
  12.     if (safeToRunScript) {
  13.         //check the render queue and make certain at least one item is queued
  14.         safeToRunScript = false;
  15.         for (i = 1; i <= app.project.renderQueue.numItems; ++i) {
  16.             if (app.project.renderQueue.item(i).status == RQItemStatus.QUEUED) {
  17.                 safeToRunScript = true;
  18.                 break;
  19.             }
  20.         }
  21.         if (! safeToRunScript) {
  22.             alert ("You do not have any items set to render.");
  23.         }
  24.     }
  25.     
  26.     if (safeToRunScript) {
  27.         // check and see if we can access the network to send email
  28.         // test before the render so the person doesn't go home and wait for an email...
  29.         
  30.         // Load code from a file with handy emailing methods:
  31.         var emailCodeFile = new File("email_methods.jsx");
  32.         emailCodeFile.open("r");    
  33.         eval( emailCodeFile.read() );
  34.         emailCodeFile.close();
  35.                 
  36.         // this address isn't actually used until send() is called, but specify the loopback for now
  37.         // this is a test to see if network access is enabled in the preferences 
  38.         // [24803] cprosser
  39.         { 
  40.             var email_test = new EmailSocket("127.0.0.1");
  41.         }
  42.  
  43.         // The script email_setup.jsx will prompt the user and establish the settings.
  44.         // We'll only run it now if we don't have the settings already.  
  45.         // If you want to change the settings, you can run email_setup.jsx as a 
  46.         // separate script at any time.
  47.         var settings = app.settings;
  48.         if ( !settings.haveSetting("Email Settings", "Mail Server") ||
  49.              !settings.haveSetting("Email Settings", "Reply-to Address") ||
  50.              !settings.haveSetting("Email Settings", "Render Report Recipient")){
  51.     
  52.             // We don't have the settings yet, so run email_setup.jsx
  53.             // to prompt for them 
  54.             var email_setupfile = new File("email_setup.jsx");
  55.             email_setupfile.open("r");    
  56.             eval( email_setupfile.read() );
  57.             email_setupfile.close();
  58.         }
  59.     
  60.         var myQueue = app.project.renderQueue //creates a shortcut for RQ
  61.         
  62.         // Call render
  63.         myQueue.render();
  64.             
  65.         // Now rendering is complete.
  66.         // Create a string for the mail message that contains:
  67.         // Start time (date)
  68.         // Render time of each item in the queue
  69.         // Total render time
  70.         var projectName = "Unsaved Project";
  71.         if (app.project.file) {
  72.             projectName = app.project.file.name;
  73.         }
  74.         // can't have bare LF in email, always put \r before \n or some
  75.         // servers will die.
  76.         var myMessage = "Rendering of " + projectName + " is complete.\r\n\r\n";
  77.         
  78.         // Email the message.
  79.         // We'll use three Settings to determine how to mail.
  80.         // The section will be named "Email Settings"
  81.         // The 3 settings will be named:
  82.         //    "Mail Server" - the mail server to use when sending mail.
  83.         //    "Reply-to Address" - the address from which the mail will be sent
  84.         //    "Render Report Recipient" - the address to which mail will be sent.
  85.     
  86.         if ( !settings.haveSetting("Email Settings", "Mail Server") ||
  87.              !settings.haveSetting("Email Settings", "Reply-to Address") ||
  88.              !settings.haveSetting("Email Settings", "Render Report Recipient")){
  89.             alert("Can't send an email, I don't have all the settings I need. Aborting.");
  90.         } else {
  91.             try {
  92.             // send the email    
  93.                 var serverSetting = settings.getSetting("Email Settings", "Mail Server");
  94.                 var fromSetting = settings.getSetting("Email Settings", "Reply-to Address");
  95.                 var toSetting   = settings.getSetting("Email Settings", "Render Report Recipient");
  96.                 var authUser;
  97.                 var authPass;
  98.                 
  99.                 if (app.settings.haveSetting("Email Settings", "Auth User")) {
  100.                     authUser = app.settings.getSetting("Email Settings", "Auth User");
  101.                 }
  102.                 
  103.                 if (app.settings.haveSetting("Email Settings", "Auth Pass")) {
  104.                     authPass = app.settings.getSetting("Email Settings", "Auth Pass");
  105.                 }
  106.                 
  107.                 //ack, can't delete settings...
  108.                 if (authUser == "") {
  109.                     authUser = null;
  110.                     authPass = null;
  111.                 }
  112.                 
  113.                 var myMail = new EmailSocket(serverSetting);
  114.                 
  115.                 
  116.                 if (! myMail.send (fromSetting, toSetting, "AE Render Completed", myMessage, authUser, authPass) ) {
  117.                     alert("Sending mail failed");
  118.                 }
  119.             } catch (e) {
  120.                 alert("Unable to send email.\n" + e.toString());
  121.             }
  122.         }
  123.     }
  124. }
  125.     
  126.     
  127.     
  128.     
  129.     
  130.